package com.southminority.ethnic.service.research;

import com.southminority.ethnic.common.result.PageResult;
import com.southminority.ethnic.controller.research.vo.IntellectualPropertyVO;

import java.util.List;

/**
 * 知识产权服务接口
 * 
 * @author SouthMinority
 */
public interface IntellectualPropertyService {

    // ==================== 前端展示接口 ====================
    
    /**
     * 获取所有知识产权列表（前端展示）
     * @return 知识产权列表
     */
    List<IntellectualPropertyVO> getIntellectualPropertyList();
    
    /**
     * 获取重点展示的知识产权列表
     * @return 重点知识产权列表
     */
    List<IntellectualPropertyVO> getFeaturedIntellectualPropertyList();
    
    /**
     * 获取知识产权详情
     * @param id 知识产权ID
     * @return 知识产权详情
     */
    IntellectualPropertyVO getIntellectualPropertyDetail(Long id);
    
    /**
     * 根据类型获取知识产权列表
     * @param type 类型
     * @return 知识产权列表
     */
    List<IntellectualPropertyVO> getIntellectualPropertyListByType(String type);
    
    /**
     * 根据年份获取知识产权列表
     * @param year 年份
     * @return 知识产权列表
     */
    List<IntellectualPropertyVO> getIntellectualPropertyListByYear(Integer year);

    /**
     * 根据法律状态获取知识产权列表
     * @param legalStatus 法律状态
     * @return 知识产权列表
     */
    List<IntellectualPropertyVO> getIntellectualPropertyListByLegalStatus(String legalStatus);

    // ==================== 管理端接口 ====================
    
    /**
     * 分页查询知识产权列表（管理端）
     * @param page 当前页
     * @param size 每页大小
     * @param keyword 搜索关键词
     * @param type 类型
     * @param legalStatus 法律状态
     * @param status 状态
     * @return 分页结果
     */
    PageResult<IntellectualPropertyVO> getIntellectualPropertyPage(Integer page, Integer size, 
                                                                  String keyword, String type, 
                                                                  String legalStatus, Integer status);
    
    /**
     * 获取所有知识产权列表（管理端）
     * @return 知识产权列表
     */
    List<IntellectualPropertyVO> getAllIntellectualPropertyList();
    
    /**
     * 创建知识产权
     * @param intellectualPropertyVO 知识产权信息
     * @return 是否成功
     */
    boolean createIntellectualProperty(IntellectualPropertyVO intellectualPropertyVO);
    
    /**
     * 更新知识产权
     * @param intellectualPropertyVO 知识产权信息
     * @return 是否成功
     */
    boolean updateIntellectualProperty(IntellectualPropertyVO intellectualPropertyVO);
    
    /**
     * 删除知识产权
     * @param id 知识产权ID
     * @return 是否成功
     */
    boolean deleteIntellectualProperty(Long id);
    
    /**
     * 批量删除知识产权
     * @param ids 知识产权ID列表
     * @return 是否成功
     */
    boolean batchDeleteIntellectualProperty(List<Long> ids);
    
    /**
     * 更新知识产权状态
     * @param id 知识产权ID
     * @param status 状态
     * @return 是否成功
     */
    boolean updateIntellectualPropertyStatus(Long id, Integer status);
    
    /**
     * 设置知识产权重点展示
     * @param id 知识产权ID
     * @param isFeatured 是否重点展示
     * @return 是否成功
     */
    boolean setIntellectualPropertyFeatured(Long id, Integer isFeatured);
} 
